package com.wgh.pay.service;

import com.wgh.pay.entity.PayLog;
import com.baomidou.mybatisplus.extension.service.IService;
import java.math.BigDecimal;
import java.util.Map;

/**
 * 支付服务接口
 */
public interface PayService extends IService<PayLog> {
    
    /**
     * 创建支付订单
     * @param orderId 订单ID
     * @param amount 支付金额
     * @param payType 支付方式
     * @param clientIp 客户端IP
     * @param notifyUrl 通知地址
     * @return 支付参数
     */
    Map<String, Object> createPayOrder(Long orderId, BigDecimal amount, Integer payType, 
                                     String clientIp, String notifyUrl);
    
    /**
     * 查询支付订单状态
     * @param orderId 订单ID
     * @return 支付订单
     */
    PayLog queryPayOrderStatus(Long orderId);
    
    /**
     * 处理支付结果通知
     * @param notifyData 通知数据
     * @param payType 支付方式
     * @return 处理结果
     */
    boolean handlePayNotify(Map<String, String> notifyData, Integer payType);
    
    /**
     * 关闭支付订单
     * @param orderId 订单ID
     * @return 是否关闭成功
     */
    boolean closePayOrder(Long orderId);
    
    /**
     * 发起退款
     * @param orderId 订单ID
     * @param refundAmount 退款金额
     * @param refundReason 退款原因
     * @return 退款结果
     */
    Map<String, Object> refund(Long orderId, BigDecimal refundAmount, String refundReason);
    
    /**
     * 查询退款状态
     * @param orderId 订单ID
     * @return 退款状态
     */
    Map<String, Object> queryRefundStatus(Long orderId);
    
    /**
     * 获取支付渠道配置
     * @param payType 支付方式
     * @return 支付配置
     */
    Map<String, Object> getPayChannelConfig(Integer payType);
    
    /**
     * 统一支付接口
     * @param payParams 支付参数
     * @return 支付结果
     */
    Map<String, Object> unifiedPay(Map<String, Object> payParams);
}